//
//  HomeViewController.swift
//  WeiBo2017
//
//  Created by 王璐 on 2017/4/12.
//  Copyright © 2017年 wl. All rights reserved.
//

import UIKit
import YYModel
import AFNetworking

///HomeVCCell可重用标识符
fileprivate let WLHomeCellID = "HomecellID"

class HomeViewController: RooterViewController {
    
    
    override func viewDidLoad() {
        setupRefreshControl()
        
        super.viewDidLoad()
        
        tableView?.register(UITableViewCell.self, forCellReuseIdentifier: WLHomeCellID)
        
        //设置访客信息
        vistorView?.setUpInfo(message: "关注一些人，回这里看看有什么惊喜")
        
        //注册网络连接监听
        NotificationCenter.default.addObserver(self, selector: #selector(HomeViewController.reachabilityChanged), name: NSNotification.Name.AFNetworkingReachabilityDidChange, object: nil)
    }
    
    deinit {
        NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AFNetworkingReachabilityDidChange, object: nil)
    }
    
    /// 内存警告
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        //iOS 6.0 it will no longer clear the view by default.
        //在ios6.0之后,默认不再清楚view,在6.0之前,收到警告后,如果当前视图没有显示(push),会从内存中销毁,下次需要使用的时候,会再次从loadView中创建view
        //只需要释放能够再次被创建的资源,例如从网络加载的数据
        //图像的内存管理SDWebImg自行管理,会释放内存中的资源,下次使用从磁盘中打开,如果磁盘没有再创建
        if self.view.window == nil{
            self.statusList.removeAll()
            self.loadData()
        }
    }
    /// 网络连接状态监听
    @objc fileprivate func reachabilityChanged(){
        print("网络连接状态的变化\(NetworkTools.sharedTools.reachable)")
    }
    
    /// 重写父类 加载数据
    override func loadData() {
        
        //判断是否是上拉刷新
        let isPullup = refreshControl?.isPullupRefresh ?? false
        
        refreshControl?.beginRefreshing()
        
        //下拉刷新索引 - 取数组第一项
        let since_id = isPullup ? 0 : (statusList.first?.id ?? 0)
        // 上拉刷新索引 - 取数组最后一项
        let max_id = !isPullup ? 0 : (statusList.last?.id ?? 0)
        //加载微博数据
        NetworkTools.sharedTools.loadStatus( since_id: since_id ,max_id: max_id) { (result) in
            
            //结束刷新
            self.refreshControl?.endRefreshing()
            
            guard let result = result?["statuses"] as?[[String:AnyObject]]  else {
                print("您的网络不给力")
                return
            }
            //字典转模型
            var arrayM = [Status]()
            
            for dict in result {
                
                arrayM.append(Status.yy_model(withJSON: dict)!)
            }
            print(arrayM)
            
            //如果是上拉刷新,数据放在后面
            if max_id > 0 {
                self.statusList += arrayM
            }else{
                self.statusList = arrayM + self.statusList
            }
            //刷新数据
            self.tableView?.reloadData()
            
            
        }
    }
    ///MARK - 私有属性
    /// 保存数据的数组
    fileprivate lazy var statusList = [Status]()
}

// MARK: - 数据源方法
extension HomeViewController {
    
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusList.count;
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: WLHomeCellID, for: indexPath)
        
        let status = statusList[indexPath.row]
        
        cell.textLabel?.text = "\(status.id)\(status.text)"
        return cell
    }
    
}
